A registry is a hierarchical repository for configuration data. The terms “information” and “data” as used herein are each intended to include the broadest definition of the other, and each include text, audio and video data. By way of further example, the term “information” can mean raw data, processed data, or a combination of raw and processed data. The registry may keep track of all software stored on the computer, and the relationship between programs. The registry may keep track of a plurality of users and hardware configurations. Preferences may vary among the plurality of users.
Each piece of data in the registry has a key-value associated with it. Together the name and value is referred to as a value entry. A key is analogous to a folder and may itself contain one or more folders, which may be referred to as subkeys, and one or more name-value pairs. The key may also be referred to as a name or a handle. To access the data and retrieve the stored value the correct key is needed.
Because the registry is a database, and thus, is a data storage location, it may be exploited for leaking data. “Leaking data” as used herein means transferring data out of a system in which it is desired to have the data secured. A process may write information to the registry, for example, for temporary storage. Another process may then access the information from the registry and write the data to a registry key. Another process may then read the data from the registry key and write it to a disk or other storage device, thereby leaking data. Accordingly, for applications wherein data security is important, there is a need to limit data leakage from the registry.